深夜十點半,社群頻道突然亮起。
一個從隔壁陣營流亡而來的旅人,帶著一個 PR 敲門。他說,這只是一個小改動,把某個判斷從線性變成常數時間,應該還不錯吧?
沒有人回答。
只有一句話從黑暗中緩緩浮現:「欸,我猜這個也是 AI 掃出來的。」
旅人沉默了兩分鐘。然後承認了。是的,是 AI 掃出來的。他看了很久,確認那個問題真的存在。但他不知道的是,那個問題早就存在了。存在了很久很久。久到沒有人記得它是什麼時候出現的。久到它已經成為 codebase 的一部分,像牆壁裡的某種聲音,你聽見了,但你不確定該不該去挖開。
「這種很小的優化,」那個聲音繼續說,「我們要想的是,這兩三行改動,會不會給這條千年路徑帶來『沒看到』的副作用。」
沒看到的。
旅人開始冒冷汗。他想起這個 PR 只有兩三行,可是 diff 底下的那條路徑,有多少東西正依附在上面,他一個都沒看過。
然後最後一句話落下,輕輕的,像蓋棺:
「btw,這條路徑,我們準備在下個大版本淘汰。」
他優化的,是一條即將死去的路。他是給亡者化妝的人,而且沒有人請他來。
但故事還沒完。
那個聲音沒有關門,反而遞給他一盞燈:「去描述為什麼值得修。去拷問 AI。或許你能找到打臉我的理由。」
還有一個更陰森的邀請:「如果你的 AI 額度很夠,去掃一下那些不穩定的測試。」
那些時而通過、時而失敗的東西。它們在大型 codebase 裡遊蕩了好幾年,有的是測試自己寫錯了,有的——背後是 production code 裡「很神秘的 bug」。
神秘的 bug。沒有人知道它長什麼樣子。只知道它偶爾會出現,讓 CI 變紅,然後又消失。
「如果你運氣很好,抓到一隻,」聲音說,「這個很加分。」
「但通常啦,都是測試本身寫得不夠好。」
通常。
旅人收好那盞燈,說他想先自己逛一下 code。上一個專案他摸了兩個多月才看懂框架。
「可以啊,照你自己的流程走。」
頻道暗了下去。
而在某條即將被淘汰的路徑深處,那個迴圈還在跑。
它已經跑了一千年。
它還會再跑到下個大版本。
然後才會安息。